﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 索引器01
{
    class Program
    {
        static void Main(string[] args)
        {
            // 索引器允许类或结构的实例像数组一样进行索引，索引器类似于属性，不同之处在于它的取值方法采用参数
            // 类的成员可以包含任意类型，包括数组和集合，当一个类包含了数组和集合的成员时，使用索引器会大大简化存取操作


            // 数据类型表示要存取ude数组或集合元素的类型
            // 索引类型表示采用哪种类型的索引来存取数组或集合的元素
            // this表示操作本对象的数组或集合成员，可以简单的理解为索引器的名字，
            // 因此索引器不能具有用户自定义的名称，也就是说所有的索引器都叫this
            //修饰符 数据类型 this[索引类型 index]
            //{
            //  get{获得属性的代码}
            //  set{设置属性的代码}
            //}

            Student stu = new Student();
            stu[0] = 100;
            stu[1] = 60;
            Console.WriteLine(stu[0]);
            Console.WriteLine(stu[1]);
        }
    }

    class Student
    {
        private int[] scores = new int[10];
        //private int id;
        public int this[int index]
        {
            get
            {
                if (index < 0 || index > 9)
                {
                    return 0;
                }
                else
                {
                    return scores[index];
                }
            }
            set
            {
                if (!(index < 0 || index > 9))
                {
                    scores[index] = value;
                }
            }
        }
    }
}
